/**
 *====================================================
 * 文件名称: EnterpriseService.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年09月23日	chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.member.service;

import java.util.Date;
import java.util.List;

import com.yuexunit.finance.member.entity.BankcodeEntity;
import com.yuexunit.finance.member.entity.EnterpriseEntity;
import com.yuexunit.finance.member.entity.EnterpriseModifyEntity;
import com.yuexunit.finance.member.entity.lexicon.AuditStateEnum;
import com.yuexunit.finance.member.entity.lexicon.EnterpriseTypeEnum;
import com.yuexunit.finance.member.entity.lexicon.StateEnum;
import com.yuexunit.finance.project.entity.FinanceAuditLogEntity;
import com.yuexunit.finance.zhanghuguangli.entity.EnterpriseAccountEntity;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;

/**
 * @ClassName: EnterpriseService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年09月23日 18:55:28
 */
public interface EnterpriseService {

	/** 创建企业信息 */
	public Long createEnterprise(EnterpriseEntity entity);
	
	/** 更新企业信息 */
	public void updateEnterprise(EnterpriseEntity entity);

	/** 更新企业信息 */
	public void persistEnterprise(EnterpriseEntity persistence);
	
	/** 更新企业认证信息 */
	public void persistAuthenticationEnterprise(EnterpriseModifyEntity persistence);

	/** 逻辑删除企业信息 */
	public void disableEnterprise(Long enterpriseId);

	/** 查询企业信息明细 */
	public EnterpriseEntity inquireEnterpriseDetail(Long enterpriseId);
	
	/** 查询企业资质认证信息明细 */
	public EnterpriseModifyEntity inquireEnterpriseDetails(Long authenticationId);

	/** 查询企业账户管理 */
	public EnterpriseAccountEntity inquireAccountManagements(Long accountId);
	
	/** 查询企业信息明细 */
	public EnterpriseEntity inquireEnterprise(Long enterpriseId);
	
	/** 查询审批记录 */
	public List<FinanceAuditLogEntity> inquirePickUpGoodsAuditList(Long auditJoinId,Long auditState);
	
	/** 查询企业资质认证信息明细 */
	public EnterpriseModifyEntity inquireAuthentication(Long authenticationId);
	
	/** 查询企业信息明细 */
	public EnterpriseEntity inquireEnterpriseFromAccountId(Long accountId);

	/** 根据租户id 查询企业信息明细 */
	public EnterpriseEntity inquireTenantEnterprise(Long tenantId, boolean ignore, Boolean enabled);
	
	/** 根据租户id 查询企业资质认证信息明细 */
	public EnterpriseModifyEntity inquireAuthenticationEnterprises(Long tenantId, boolean ignore, Boolean enabled);
	
	public EnterpriseModifyEntity inquireAuthenticationEnterprise(Long tenantId);//Long enterpriseId
	
	/** 查询企业资质信息明细 */
	public EnterpriseModifyEntity queryEnterpriseDetail(Long authenticationId);
	
	/** 查询银行行号 网点名称 */
//	public BankcodeEntity queryBankCodeList(String dotName);
	public PageList<BankcodeEntity> queryBankCodeList(String dotName,PageCriteria page);
	
	
	/** 更新企业资质信息 */
	public void updateAuthenticationEnterprise(EnterpriseModifyEntity entity);

	/** 查询企业信息列表 */
	public PageList<EnterpriseEntity> inquireEnterprisePageList(List<Long> enterpriseIds, String enterpriseName, AuditStateEnum auditState, String mobile, String legalPerson, StateEnum state, Date createDateTimeBegin, Date createDateTimeEnd, EnterpriseTypeEnum enterpriseType, Boolean isPassed, Long finalState, PageCriteria page);
	
	/** 查询修改企业信息列表 */
	public PageList<EnterpriseModifyEntity> queryEnterpriseModifyPageList(String enterpriseName, AuditStateEnum auditState, String legalPerson, StateEnum state, Date createDateTimeBegin, Date createDateTimeEnd, EnterpriseTypeEnum enterpriseType, Boolean isPassed, PageCriteria page);
	
	/** 查询企业账户信息列表  */
	public PageList<EnterpriseAccountEntity> queryAccountManagesPageList(String accountHolder, String depositBank, Date createDateTimeBegin, Date createDateTimeEnd, String subbranch,String creditCard,Integer defaultAccount, Long enterpriseId, PageCriteria page);
	
	/**
	 * 查询企业账户列表
	 */
	public EnterpriseAccountEntity queryAccountInfoDetail(Long accountId);
	
	/***/
	public void updateAccountInfos(EnterpriseAccountEntity entity);
	
	/** 客户端查看修改的企业信息列表 */
	public PageList<EnterpriseModifyEntity> queryEnterpriseModifyPageLists(String enterpriseName, AuditStateEnum auditState, String legalPerson, Long enterpriseId, Date createDateTimeBegin, Date createDateTimeEnd, EnterpriseTypeEnum enterpriseType, Boolean isPassed, PageCriteria page);
	
	/** 查询企业信息列表 */
	public PageList<EnterpriseEntity> inquireEnterprisePageListByIds(Long[] enterpriseIds, PageCriteria page);
	
	/** 查询企业信息列表 */
	public List<EnterpriseEntity> inquireEnterpriseList(EnterpriseTypeEnum enterpriseType);
	
	/** 查询企业信息列表 */
	public List<EnterpriseEntity> inquireEnterpriseList1(Long enterpriseId);
	
	/** 查询企业信息列表 */
	public List<EnterpriseEntity> inquireAllEnterpriseList();
	
	/** 查询所属客户列表 */
	public PageList<EnterpriseEntity> inquireEnterprisePageList(String enterpriseName, AuditStateEnum auditState, String mobile, String legalPerson, StateEnum state, Date createDateTimeBegin, Date createDateTimeEnd, EnterpriseTypeEnum enterpriseType, String belongsEnterpriseCode, Long[] enterpriseId, PageCriteria page);
	
	public List<Long> conutDistributors();
	
	public List<Long> countEnterprises();
	
	public List<Long> countAuditedEnterprises();

	public List<Long> countAuditedClients();

	public List<Long> conutEnterpriseId(String enterpriseCode);
	
	/** 查询审核通过企业信息列表 */
	public List<EnterpriseEntity> inquireAuditedEnterpriseList();
	
	
	public EnterpriseEntity inquireEnterpriseByServiceId(String serviceId);
	
	public List<EnterpriseEntity> inquireEnterpriseByEnterpriseName(String enterpriseName);
	
}
